<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>
      对象和代码块的区别(The difference between objects and code blocks)
    </title>
    <!-- 
    在JavaScript中，对象和代码块是两个不同的概念，它们在语法和用途上有显著的区别。

    一.对象（Objects）
    1. 定义：
      - 对象是JavaScript中一种复杂数据类型，用于存储键值对（属性）。对象可以包含各种类型的值，包括其他对象、数组、函数等。

    2. 创建：
      - 对象可以通过字面量、构造函数或 `Object.create()` 等方式创建。
      // 对象字面量
      const person = {
        name: 'Alice',
        age: 25,
        greet: function() {
          console.log('Hello, ' + this.name);
        }
      };

    3. 用途：
      - 对象用于组织和存储相关的数据和功能，能够模拟现实世界中的实体，如用户、产品等。

    4. 访问：
      - 对象的属性可以通过点（ `.` ）或方括号（ `[]` ）语法来访问。
      console.log(person.name); // 输出: Alice
      person.greet(); // 输出: Hello, Alice

    二.代码块（Code Blocks）
    1. 定义：
      - 代码块是一段被大括号  `{}`  包围的代码，用于定义代码的作用域。它可以包含多条语句。

    2. 创建：
      - 代码块通常在控制结构（如 `if` 、 `for` 、 `while` ）或函数定义中使用。
      if (true) {
          console.log('This is a code block');
      }

    3. 用途：
      - 代码块用于控制代码的执行流程和作用域。它们可以帮助限制变量的作用域，避免变量冲突。

    4. 作用域：
      - 在代码块中声明的变量（使用 `let` 或 `const` ）仅在该代码块内有效。
      {
          let x = 10;
          console.log(x); // 输出: 10
      }
      // console.log(x); // 报错: x is not defined
      
    总结

    - 对象是用于存储数据和功能的结构，能够组织和管理相关信息。
    - 代码块是用于控制代码执行和作用域的语法结构，帮助管理变量的生存期和可访问性。

    理解这两者之间的区别对于有效编写和组织JavaScript代码非常重要。
   -->
  </head>
  <body>
    <script>
      // 对象
      const person = {
        name: "Alice",
        age: 25,
        greet: function () {
          console.log("Hello, " + this.name);
        },
      };
      person.greet(); // 输出: Hello, Alice

      // 代码块
      {
        let x = 10;
        console.log(x); // 输出: 10
      }
      // console.log(x); // 报错: x is not defined
    </script>
  </body>
</html>
